package com.ruoyi.system.service;

import com.ruoyi.common.core.domain.GloryDataDTO;
import com.ruoyi.system.domain.GloryData;
import com.ruoyi.system.domain.GloryType;

import java.util.List;

/**
 * 荣誉类型Service接口
 *
 * @author 王清江
 * @date 2021-01-29
 */
public interface IGloryTypeService {

    /**
     * 初始化缓存中荣誉类型和数据
     *
     * @return 荣誉类型+数据
     */
    public List<GloryType> init();

    /**
     * 将前端需要的传输荣誉从缓存每次取出来，整理好之后，再传回给前端
     *
     * @return 荣誉数据传输对象
     */
    public List<GloryDataDTO> getGloryData();


    /**
     * 从缓存拿荣誉数据，如果拿不到，就去数据库查询，查询之后填充缓存。
     *
     * @return 荣誉数据
     */
    public GloryData getGloryDataFromCache(Long gloryId);

    /**
     * 查询荣誉类型
     *
     * @param gloryTypeId 荣誉类型ID
     * @return 荣誉类型
     */
    public GloryType selectGloryTypeById(Long gloryTypeId);

    /**
     * 查询荣誉类型列表
     *
     * @param gloryType 荣誉类型
     * @return 荣誉类型集合
     */
    public List<GloryType> selectGloryTypeList(GloryType gloryType);

    /**
     * 新增荣誉类型
     *
     * @param gloryType 荣誉类型
     * @return 结果
     */
    public int insertGloryType(GloryType gloryType);

    /**
     * 修改荣誉类型
     *
     * @param gloryType 荣誉类型
     * @return 结果
     */
    public int updateGloryType(GloryType gloryType);

    /**
     * 批量删除荣誉类型
     *
     * @param gloryTypeIds 需要删除的荣誉类型ID
     * @return 结果
     */
    public int deleteGloryTypeByIds(Long[] gloryTypeIds);

    /**
     * 删除荣誉类型信息
     *
     * @param gloryTypeId 荣誉类型ID
     * @return 结果
     */
    public int deleteGloryTypeById(Long gloryTypeId);

    /**
     * 修改荣誉类型状态
     *
     * @param gloryType 荣誉类型
     * @return 影响行数
     */
    int updateGloryStatus(GloryType gloryType);

    /**
     * 刷新荣誉类型缓存
     */
    void flushCache();
}
